package model

type Groups struct {
	TimeModel       `xorm:"extends"`
	GroupsCreatable `xorm:"extends"`
	Id              int64 `json:"id" xorm:"notnull pk autoincr BIGINT"`
	AppsId          uint  `json:"apps_id" xorm:"not null index comment('app id') INT" es:"type:integer"`
	UserId          int64 `json:"user_id" xorm:"BIGINT notnull comment('归属用户id')"`
	Status          int   `json:"status" xorm:"TINYINT notnull default 1 comment('状态 -1:封禁 2:关闭 1:正常')"`
	// 入群批准,2:不需要 1:需要
	Approval int `json:"approval" xorm:"TINYINT notnull default 0 comment('入群批准 2:不需要 1:需要')"`
	// 最大人数
	MaxUsers int64 `json:"max_users" xorm:"INT notnull default 200 comment('最大人数 默认200 最大3000')"`
}

type GroupsCreatable struct {
	// 描述
	Desc string `json:"desc" xorm:"TEXT comment('描述')" validate:"required" label:"描述"`
	// 名称
	Name string `json:"name" xorm:"VARCHAR(50) notnull comment('名称')" validate:"required"  label:"名称"`
	// 封面图
	CoverImage string `json:"cover_image" xorm:"cover_image not null varchar(512)" es:"type:text" validate:"required"　label:"封面"`
	// 地理坐标, "lat,lon"
	Location string `json:"location" xorm:"location not null varchar(128)" es:"type:geo_point,ignore_malformed:true"`
	// 地标地址
	Address string `json:"address" xorm:"address not null varchar(128)"`
	// 公告板
	Notice string `json:"notice" xorm:"notice not null varchar(512)"`
}

const (
	Groups_Status_Delete int = -1
	Groups_Status_Normal int = 1
	Groups_Status_Close  int = 2
)
const (
	Groups_Approval_Need = 1
	Groups_Approval_Open = 2
)

func (c Groups) TableName() string {
	return "groups_v1"
}
